package com.qfjy.config.mq;

import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @ClassName EmailConfig
 * @Description TODO  发送邮件MQ config
 * @Author guoweixin
 * @Date 2023/4/13
 * @Version 1.0
 */
@Configuration
public class EmailConfig {

    /**
     *  单发送 单接收 定义队列
     */
    @Bean
    public Queue emailQueue(){
  /*
         this(name, true, false, false);
          queue: 队列名称
          durable： 是否持久化, 队列的声明默认是存放到内存中的，
                    如果rabbitmq重启会丢失，如果想重启之后还存在就要使队列持久化，
                    保存到Erlang自带的Mnesia数据库中，当rabbitmq重启之后会读取该数据库
          exclusive：是否排外的，有两个作用，
                一：当连接关闭时connection.close()该队列是否会自动删除；
                二：该队列是否是私有的private，如果不是排外的，可以使用两个消费者都访问同一个队列，没有任何问题，
                如果是排外的，会对当前队列加锁，其他通道channel是不能访问的，如果强制访问会报异常。
                一般等于true的话用于一个队列只能有一个消费者来消费的场景

         autoDelete：
                是否自动删除，当最后一个消费者断开连接之后队列是否自动被删除，
             可以通过RabbitMQ Management，查看某个队列的消费者数量，当consumers = 0时队列就会自动删除
         */
        //  this(name, true, false, false);
        return new Queue("emailQueue");

    }

}
